/*
函数功能：
pthread_detach：用于将一个线程设置为分离状态。当一个线程被分离后，它将独立运行，其资源会在线程结束时自动释放，不需要其他线程来等待它结束并进行资源回收。
pthread_join：用于等待一个特定线程结束。调用pthread_join的线程会阻塞，直到指定的线程执行完毕，然后可以获取被等待线程的返回值，并进行一些必要的清理工作。
资源回收方式：
pthread_detach：线程结束后，系统会自动回收其占用的资源，如栈空间等。不需要其他线程显式地进行回收操作，避免了资源泄漏的问题。
pthread_join：需要由调用pthread_join的线程来回收被等待线程的资源。如果没有调用pthread_join来等待线程结束并回收资源，那么线程结束后其资源将不会被释放，会导致资源泄漏。
使用场景：
pthread_detach：适用于那些不需要获取线程返回值，也不需要关心线程执行顺序的场景。比如一些后台任务线程，它们在启动后就独立运行，完成任务后自动释放资源，不需要主线程或其他线程来等待它们结束
pthread_join：适用于需要确保某个线程执行完毕后，再继续执行后续操作的场景。比如在多线程计算中，主线程需要等待所有子线程完成计算任务后，才能进行结果汇总和后续处理。

*/

#include <head.h>

void *Func_pthread(void *arg)
{
	while (1)
	{
		sleep(1);
		printf("你好\n");
	}
}

int main(int argc, char const *argv[])
{

	pthread_t tid;
	pthread_create(&tid, NULL, Func_pthread, NULL);

	// 线程设置为分离态

	pthread_detach(tid);

	// 终止线程
	getc(stdin); // 等待用户按下

	pthread_cancel(tid);
	printf("已终止");

	return 0;
}